<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of report
 *
 * @author Константин Охотник
 */
class SellingModel extends Crud
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('ci_access');
    }
  
    private function addClassStatus($r)
    {
        if($r == 'Новый')
        {
            return '<select name="status" style="width:80px;">
                        <option selected value="Новый">Новый</option>
                        <option value="В заказ">В заказ</option>
                        <option value="На отгрузку">На отгрузку</option>
                        <option value="Ждут оплаты">Ждут оплаты</option>
                        <option value="Заказ на фабрику">Заказ на фабрику</option>
                        <option value="Товар доставлен">Товар доставлен</option>
                        <option value="Отменено">Отменено</option>
                    </select>';  
        }
        if($r == 'В заказ')
        {
            return '<select name="status" style="width:80px;">
                        <option value="Новый">Новый</option>
                        <option selected value="В заказ">В заказ</option>
                        <option value="На отгрузку">На отгрузку</option>
                        <option value="Ждут оплаты">Ждут оплаты</option>
                        <option value="Заказ на фабрику">Заказ на фабрику</option>
                        <option value="Товар доставлен">Товар доставлен</option>
                        <option value="Отменено">Отменено</option>
                    </select>';  
        }
        if($r == 'На отгрузку')
        {
            return '<select name="status" style="width:80px;">
                        <option value="Новый">Новый</option>
                        <option value="В заказ">В заказ</option>
                        <option selected value="На отгрузку">На отгрузку</option>
                        <option value="Ждут оплаты">Ждут оплаты</option>
                        <option value="Заказ на фабрику">Заказ на фабрику</option>
                        <option value="Товар доставлен">Товар доставлен</option>
                        <option value="Отменено">Отменено</option>
                    </select>';  
        }
        if($r == 'Ждут оплаты')
        {
            return '<select name="status" style="width:80px;">
                        <option value="Новый">Новый</option>
                        <option value="В заказ">В заказ</option>
                        <option value="На отгрузку">На отгрузку</option>
                        <option selected value="Ждут оплаты">Ждут оплаты</option>
                        <option value="Заказ на фабрику">Заказ на фабрику</option>
                        <option value="Товар доставлен">Товар доставлен</option>
                        <option value="Отменено">Отменено</option>
                    </select>';  
        }
        if($r == 'Заказ на фабрику')
        {
            return '<select name="status" style="width:80px;">
                        <option value="Новый">Новый</option>
                        <option value="В заказ">В заказ</option>
                        <option value="На отгрузку">На отгрузку</option>
                        <option value="Ждут оплаты">Ждут оплаты</option>
                        <option selected value="Заказ на фабрику">Заказ на фабрику</option>
                        <option value="Товар доставлен">Товар доставлен</option>
                        <option value="Отменено">Отменено</option>
                    </select>';  
        }
        if($r == 'Отменено')
        {
            return '<select name="status" style="width:80px;">
                        <option value="Новый">Новый</option>
                        <option value="В заказ">В заказ</option>
                        <option value="На отгрузку">На отгрузку</option>
                        <option value="Ждут оплаты">Ждут оплаты</option>
                        <option value="Заказ на фабрику">Заказ на фабрику</option>
                        <option value="Товар доставлен">Товар доставлен</option>
                        <option selected value="Отменено">Отменено</option>
                    </select>';  
        }
        if($r == 'Товар доставлен')
        {
            return '<select name="status" style="width:80px;">
                        <option value="Новый">Новый</option>
                        <option value="В заказ">В заказ</option>
                        <option value="На отгрузку">На отгрузку</option>
                        <option value="Ждут оплаты">Ждут оплаты</option>
                        <option value="Заказ на фабрику">Заказ на фабрику</option>
                        <option selected value="Товар доставлен">Товар доставлен</option>
                        <option value="Отменено">Отменено</option>
                    </select>';  
        }
    }
    
/*===============================Вывод всех Записей===============================*/
    public function getSelling($url, $per_page)
    {
        $config['base_url']=$url;
        $config['total_rows'] = $this->db->count_all('tb_order');
        $config['per_page'] = $per_page;
        $this->pagination->initialize($config);
        $r = $this->db->query('SELECT * FROM tb_order order by id desc LIMIT '.(int)$this->uri->segment(3).', '. (int)$config['per_page'].' ');
        $i = 0;
        
        foreach($r =$r->result_array() as $key )
        {
           $r[$i]['htmlstatus'] = $this->addClassStatus($r[$i]['status']);
           $p = $this->get_one('tb_person', 'id', $key['id_person']);
           if(empty($p))
           {
                $r[$i]['id_person'] = 'Пользователь удалён';
           }
           else
           {
                $r[$i]['id_person'] = $p[0]['name'].' '.$p[0]['first_name'].' '.$p[0]['second_name'];
           }
           
           
          $this->_getProduct($key, $r,$i );
           $i++;
        }
        return $r;
    }

    
/*===================================Поиск клиента==============================*/      
    public function Filter($url, $request, $per_page)
    {
        if(empty($request['status']))
        {
            unset($request['status']);
        }
        if(empty($request['name']))
        {
            unset($request['name']);
        }
        $offers = 0;                                //Для limit $offers, $num
        if (isset($request['per_page']))
        {
            $offers = (int)$request['per_page'];
            unset($request['per_page']); 
        }
        if(isset($request['phone']))
        {
            if($request['phone']=='')
            {
               unset($request['phone']);
            }
        }
        
        $selcount =  $this->_CountRowsQuery('SELECT COUNT(*) FROM tb_order WHERE ', $request);
        $seldata  =  $this->_CountRowsQuery('SELECT * FROM tb_order WHERE ', $request);
        $num_rows = $this->numRowsTender($selcount);
        
        if($num_rows == 0)
        {
            $query['error'] = "По вашему запросу ничего не найдено";
            return $query;
        }
        
        $config['base_url']=$url.'?'.http_build_query($request);
        $config['total_rows'] = $num_rows;
        $config['per_page'] = $per_page;
        $config['page_query_string'] = TRUE;
        $this->pagination->initialize($config);
       
        $r = $this->_getFilterTenders($seldata, $config['per_page'],$offers);
        $i =0;
        foreach($r  as $key )
        {
           $r[$i]['htmlstatus'] = $this->addClassStatus($r[$i]['status']);
           $p = $this->get_one('tb_person', 'id', $key['id_person']);
            if(empty($p))
           {
                $r[$i]['id_person'] = 'Пользователь удалён';
           }
           else
           {
                $r[$i]['id_person'] = $p[0]['name'].' '.$p[0]['first_name'].' '.$p[0]['second_name'];
           }
           $this->_getProduct($key, $r,$i );
           /*$p = $this->get_one('tb_product', 'id', $key['id_product']);
           $r[$i]['product'] = $p[0]['name'];
           $r[$i]['price'] = $p[0]['price'];
           $p = $this->get_one('tb_fabricator', 'id', $p[0]['id_fabricator']);
           $r[$i]['fabricator'] =  $p[0]['name'];*/
           $i++;
        }
        return  $r;
    }

/*===================================Построение запроса==========================*/     
    private function _CountRowsQuery($select, $request)
    {
        $idcategory="";
        $count = 0;
        foreach($request as $key =>$value)
        {
            if ($key =='status')
            {
                $select.= " status = '".$request[$key]."'";
            }
            if($key == 'name')
            {
                $select.= " name LIKE '%".$request[$key]."%'";
            }
            
            if ($count <(count($request)-1))
            {
                $select.=" AND ";
            }
            $count++;
        }
        return $select;
    }
    
/*===================================Кол записей=============================*/      
    private function numRowsTender($str)
    {
        $query= $this->db->query($str)->result();
        $arr =(array)$query[0];
        return (integer)$arr['COUNT(*)'];
    }
    
/*===================================Вывод==================================*/       
    private function _getFilterTenders($select, $num, $offset= 0)
    {
        $offset = (int)$offset;
        $select .= " ORDER BY id DESC LIMIT  $offset , $num";
        $query = $this->db->query($select);
        return (array)$query->result_array();
    }
    
}